package com.itmk.web.sys_banner.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.itmk.utils.ResultUtils;
import com.itmk.utils.ResultVo;
import com.itmk.web.goods.service.GoodsService;
import com.itmk.web.sys_banner.entity.BannerParm;
import com.itmk.web.sys_banner.entity.SysBanner;
import com.itmk.web.sys_banner.service.SysBannerService;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RequestMapping("/api/banner")//用于调用的索引，例如小程序某个地方如果要调用这个程序，调用的地址就是/api/banner
@RestController
public class SysBannerController {
    @Autowired
    private SysBannerService sysBannerService;//引入service层
    @Autowired
    private GoodsService goodsService;

    //新增
    @PostMapping//新增用post请求完成
    public ResultVo add(@RequestBody SysBanner sysBanner){//调用add新增函数，传入sysBanner实体类
        if (sysBannerService.save(sysBanner)){//保存，并同时判断是否成功
            return ResultUtils.success("新增成功");//返回成功信息
        }
        return ResultUtils.error("新增失败");//返回失败信息
    }
    //删除
    @DeleteMapping("/{banId}")//删除用delete请求完成
    public ResultVo delete(@PathVariable("banId") Long banId){//调用delete删除函数，传入sysBanner实体类
        if (sysBannerService.removeById(banId)){//去除数据，并同时判断是否成功
            return ResultUtils.success("删除成功");//返回成功信息
        }
        return ResultUtils.error("删除失败");//返回失败信息
    }
    //编辑
    @PutMapping//编辑用put请求完成
    public ResultVo edit(@RequestBody SysBanner sysBanner){//调用edit修改函数，传入sysBanner实体类
        if (sysBannerService.updateById(sysBanner)){//更新，并同时判断是否成功
            return ResultUtils.success("编辑成功");//返回成功信息
        }
        return ResultUtils.error("编辑失败");//返回失败信息
    }
    //查询
    @GetMapping("/list")//生成列表要查询数据，所以用Get请求完成
    public ResultVo list(BannerParm parm){//调用list列表函数，传入sysBanner实体类
        //构造分页对象
        IPage<SysBanner> page = new Page<>(parm.getCurrentPage(),parm.getPageSize());
        //构造查询条件
        QueryWrapper<SysBanner> query = new QueryWrapper<>();
        query.lambda().like(StringUtils.isNotEmpty(parm.getTitle()),SysBanner::getTitle,parm.getTitle())//搜索操作用like方法查询，查询对象是title，简而言之就是按与广告标题的相似程度查询
                .orderByDesc(SysBanner::getOrderNum);//排序操作，根据广告序号OrderNumber排序
        IPage<SysBanner> list = sysBannerService.page(page,query);//打包list,这里按照SysBanner的标准打包
        return ResultUtils.success("查询成功",list);//返回成功信息，并且把打包好的list传出去
    }
    //上架下架
    @PostMapping("/upandown")
    public ResultVo upandown(@RequestBody SysBanner sysBanner){
        UpdateWrapper<SysBanner> query = new UpdateWrapper<>();
        query.lambda().set(SysBanner::getStatus,sysBanner.getStatus())
                .eq(SysBanner::getBanId,sysBanner.getBanId());
        if(sysBannerService.update(query)){
            return ResultUtils.success("设置成功!");
        }
        return ResultUtils.error("设置失败!");
    }
    //查询小程序首页轮播图数据
    @GetMapping("/getIndexBanner")
    public ResultVo getIndexBanner(){
        QueryWrapper<SysBanner> query = new QueryWrapper<>();
        query.lambda().eq(SysBanner::getStatus,"0")
                        .orderByAsc(SysBanner::getOrderNum);
        List<SysBanner> list = sysBannerService.list(query);
        return ResultUtils.success("查询成功",list);
    }

}
